package com.zkyc.framework.website.controller;

import com.zkyc.framework.common.exception.ResultCode;
import com.zkyc.framework.common.pojo.Pi;
import com.zkyc.framework.common.vo.ResultVO;
import com.zkyc.framework.website.service.PiService;
import com.zkyc.framework.website.vo.PiPageVo;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;

/**
 * (Pi)表控制层
 *
 * @author libingchuan
 * @since 2022-11-15 16:22:10
 */
@RestController
@RequestMapping("pi")
public class PiController {
    /**
     * 服务对象
     */
    @Resource
    private PiService piService;

    /**
     * 分页查询
     *
     * @return 查询结果
     */
    @PostMapping("listByPage")
    public ResultVO queryByPage(@RequestBody PiPageVo piPageVo) throws Exception {
        return piService.queryByPage(piPageVo);
    }
    

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("query/{id}")
    public ResultVO queryById(@PathVariable("id") Integer id) {
        Pi pi = piService.queryById(id);
        if(pi == null){
            return ResultVO.fail(ResultCode.SERVE_ERROR);
        }
        return ResultVO.data(pi);
    }

    /**
     * 新增数据
     *
     * @param pi 实体
     * @return 新增结果
     */
    @PostMapping("save")
    public ResultVO add(@RequestBody @Valid Pi pi) {
        return piService.insert(pi);
    }

    /**
     * 新增数据
     *
     * @param userCodes
     * @return 新增结果
     */
    @GetMapping("saveByUserCode")
    public ResultVO add(@RequestParam("userCodes") List<String> userCodes) {
        return piService.insert(userCodes);
    }

    /**
     * 编辑数据
     *
     * @param pi 实体
     * @return 编辑结果
     */
    @PostMapping("edit")
    public ResultVO edit(@RequestBody Pi pi) {
        return piService.update(pi);
    }

    /**
     * 删除数据
     *
     * @param id 主键
     * @return 删除是否成功
     */
    @GetMapping("delete")
    public ResultVO deleteById(Integer id) {
        return piService.deleteById(id);
    }

    /**
     * 查询组织
     *
     * @param type
     * @return 删除是否成功
     */
    @GetMapping("getOrganization")
    public ResultVO getOrganization(Integer type) {
        return piService.getOrganization(type);
    }

}

